package com.gxuwz.dao;

import com.gxuwz.entity.Leave;
import com.gxuwz.entity.dto.LeaveDto;
import com.gxuwz.entity.vo.LeaveVo;
import com.gxuwz.entity.vo.PageVo;
import com.gxuwz.result.PageInfo;

import java.util.List;

/**
 * @Description:实现请假申请相关记录信息操作接口
 */
public interface LeaveDao {

    /**
     * @Description:通过辅导员编号查询请假申请
     * @Param:  [com.gxuwz.entity.dto.LeaveDto, java.lang.String, com.gxuwz.result.PageInfo]
     * @Return: com.gxuwz.entity.vo.PageVo
     */
    
    public PageVo selectLeaveByInstID(LeaveDto leaveDto, String instID, PageInfo pageInfo);

    /**
     * @Description:修改请假申请记录信息状态
     * @Param:  [com.gxuwz.entity.Leave]
     * @Return: int
     */
    
    public int updateLeaveStatus(Leave entity);

    /**
     * @Description:通过请假申请编号查询一组请假申请记录
     * @Param:  [java.lang.String[]]
     * @Return: java.util.List<com.gxuwz.entity.vo.LeaveVo>
     */
    
    public List<LeaveVo> selectLeaveByIds(String[] ids);

    /**
     * @Description:通过请假申请编号查询一条请假申请记录
     * @Param:  [java.lang.String]
     * @Return: com.gxuwz.entity.vo.LeaveVo
     */
    
    LeaveVo selectLeaveByID(String leaveID);

    /**
     * @Description:查询所有的请假申请记录信息
     * @Param:  [com.gxuwz.entity.dto.LeaveDto, com.gxuwz.result.PageInfo]
     * @Return: com.gxuwz.entity.vo.PageVo
     */
    
    public PageVo selectLeaveAll(LeaveDto entityDto, PageInfo pageInfo,String stuID);

    /**
     * @Description:通过请假申请记录编号查询请假申请记录信息
     * @Param:  [java.lang.String]
     * @Return: com.gxuwz.entity.vo.LeaveVo
     */
    
    public LeaveVo selectLeaveByLeaveID(String leaveId);

    /**
     * @Description:插入一条请假申请记录信息
     * @Param:  [com.gxuwz.entity.Leave]
     * @Return: int
     */
    
    public int insertLeave(Leave entity);

    /**
     * @Description:通过请假申请编号删除一条请假申请记录信息
     * @Param:  [java.lang.String]
     * @Return: int
     */
    
    public int deleteLeaveById(String leaveId);

    /**
     * @Description:通过学生编号获得辅导员编号
     * @Param:  [java.lang.String]
     * @Return: java.lang.String
     */
    
    public String getInstIDByStuID(String stuID);

    /**
     * @Description:通过辅导员编号获取一组请假申请
     * @Param:  [com.gxuwz.entity.dto.LeaveDto, java.lang.String]
     * @Return: java.util.List<com.gxuwz.entity.vo.LeaveVo>
     */
    
    List<LeaveVo> selectLeaveListByInst(LeaveDto leaveDto, String instID);
}
